/*
	示例 1：
	输入：strs = ["flower","flow","flight"]
	输出："fl"

	示例 2：
	输入：strs = ["dog","racecar","car"]
	输出：""
	解释：输入不存在公共前缀。
*/

package main

import "fmt"

func longestCommonPrefix(strs []string) string {
	s0 := strs[0]                // ① 把数组的第一个字符串当作基准
	for index, str := range s0 { // ② 遍历基准字符串的每个字符及其索引
		for _, str2 := range strs { // ③ 遍历数组中的每个字符串
			if index == len(str2) || str2[index] != byte(str) { // ④ 判断字符是否不匹配--str2[index] != byte(str) 这行代码是在比较两个字符是否不相等
				fmt.Println(byte(str), "    ", str2[index])
				fmt.Println(string(byte(str)), "    ", string(str2[index]))
				return s0[:index] // ⑤ 若不匹配，返回从开头到当前索引的子串
			}
		}
	}
	return s0 // ⑥ 如果所有字符都匹配，就返回基准字符串
}

func main() {
	publicHead := []string{"hel", "helIn", "heOnq"} // ⑦ 定义测试用的字符串数组
	data := longestCommonPrefix(publicHead)         // ⑧ 调用函数计算最长公共前缀
	fmt.Println(data)                               // ⑨ 输出结果
}
